package com.learn.algorlthm;

/**
 * @classname:
 * @Description: 表示数值的字符串
 * @author: yfpu(fengpu.yang @ ucarinc.com)
 * @Date: 2018-07-24 15:05
 * 题目描述：
 * 请实现一个函数用来判断字符串是否表示数值（包括整数和小数）。
 * 例如，字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。但是"12e","1a3.14","1.2.3""+-5"和"12e+4.3"都不是。
 */
public class Learn20 {
    /**
     * 解题思路
     * 使用正则表达式进行匹配
     *
     * []  ： 字符集合
     * ()  ： 分组，在这里是为了让表达式更清晰
     * ?   ： 重复 0 ~ 1
     * +   ： 重复 1 ~ n
     * *   ： 重复 0 ~ n
     * .   ： 任意字符
     * \\. ： 转义后的 .
     * \\d ： 任意数字
     */

    public static boolean isNumber(char[] str) {
        if (str == null)
            return false;
        return new String(str).matches("[+-]?\\d*(\\.\\d+)?([eE][+-]?\\d+)?");
    }
}
